# First startup
# Safety Instructions (Must Read)
> π‘ - **Hardware Usage Guidelines (Preventing Damage)**
- Please use the included **USB-A** power cable (**5A**). Do not use power supplies below **3A** current (such as phone chargers), as this may cause the smart single-board computer to be underpowered and crash frequently. If external high-power modules (e.g., motors) are needed, power them separately. Do not draw power from the smart single-board computer **USB** port or **GPIO** port (to avoid overloading and damaging the board).
- Always disconnect power before plugging or unplugging accessories (such as camera FPC cables or Ethernet cables). Hot-plugging may damage interface chips. The **USB-C** port is for firmware flashing and host mode communication only β do not use it to power the board.
- Operating temperature:**-20 ~ +70 Β°C**. Do not use the device in high-temperature (e.g., direct sunlight), high-humidity (humidity >**80%**), or dusty environments. Before handling, touch a metal object to discharge static electricity; avoid touching chip pins on the board with bare hands.
- **System and Software Precautions**
- Only official system images provided by Quectel are supported. Do not flash images intended for other boards (e.g., Raspberry Pi), as this will cause driver incompatibility and boot failures.
- When installing software, use the **apt** command to download from official repositories. Avoid installing packages from unknown sources to prevent system compromise or crashes.
# What You Need
Depending on the usage scenario, there are two configuration options: **External** Display and ADB **Connection**. β = Required, β = Optional.
| **Accessories** | **Specification** | **External Display** | **ADB Connection** |
| --- | --- | --- | --- |
| Quectel Pi M1/L1 smart single-board computer | β | β | β |
| Power Adapter | 5V/5A or 9V/3A PD | β | β |
| Ethernet Cable | Connect to router, or use Wi-Fi | β | β |
| Display | PC / Laptop / MIPI screen | β | β |
| USB-C DP / HDMI Cable | Connect to Display | β | β |
| Keyboard/Mouse | USB wired/wireless | β | β |
| PC / Laptop | For running terminal software | β | β |
| USB Type-C to USB Type-A Data Cable | Connect board to PC | β | β |
# Pre-Power-On Preparation
**Quectel Pi M1/L1 smart single-board computer has 2 DIP switches. Set both DIP switch 1 and DIP switch 2 to the OFF position, as shown below.**
| **Note: tips** |
| --- |
| This demonstration uses the Quectel Pi M1 smart single-board computer. The Quectel Pi L1 smart single-board computer operations are the same as for the M1. |
**DIP Switch States:**
| **
DIP Switch
** | **
Switch set to ON
** | **
Switch set to OFF
** |
| --- | --- | --- |
|
DIP Switch 1
|
USB host mode β supports Type-A ports, Ethernet, and ADB; mouse and keyboard can be connected
|
USB device mode β for ADB debugging only; Type-A ports and Ethernet are not available
|
|
DIP Switch 2
|
System boots into USB download mode
|
Normal system boot
|
```{image} images/image_XaqYbDB5uoeuVuxYwVZc7wq1n1f.webp
:width: 741px
:height: 475px
:align: center
```
# **Choose Your Setup Scenario**
Quectel Pi M1/L1 smart single-board computer ships with Debian 13 pre-installed β no image flashing is required. Choose the appropriate startup method based on your equipment:
| **Scenario** | **Applicable Conditions** | **Reference** |
| --- | --- | --- |
| **With External Display** | Has HDMI/USB-C DP/MIPI display, keyboard and mouse | [External Display Boot the Board](#scenario-1-external-display-boot-the-board) |
| **Without External Display** | No display device; only a USB-C data cable and a computer | [Without Display Boot the Board](#scenario-2-without-display-boot-the-board) |
## Scenario 1: External Display Boot the Board
### Hardware Connection
> β οΈ **Warning: Disconnect all power sources before making connections. Hot-plugging interfaces may cause hardware damage!**
```{image} images/image_VZjpbfjA3oDo2YxZcMMcRRfqneb.webp
:width: 1033px
:height: 713px
:align: center
```
1. **Display Connection:** Select the connection method based on the display's interface. Here we use Method 2: connect one end of the Micro HDMI cable to the board's Micro HDMI port and the other end to the display's HDMI port.
- Method 1 (HD): Connect one end of the **FPC** cable to the **Quectel Pi M1/L1**'s MIPIport, and the other end to the display's **MIPI** port. For details, refer to the [MIPI](<../../User Guide/Display/MIPI/MIPI.md>)γ
- Method 2 (Compatible): Connect one end of the **HDMI** cable to the **Quectel Pi M1/L1**'s HDMI port, and the other end to the display's **HDMI** port.
2. **Network Connection**: Connect with an Ethernet Cable to **Quectel Pi M1/L1** Ethernet port to a router's **LAN** port using an Ethernet cable.
3. **Peripheral Connection**: Connect the **USB** Plug the USB keyboard and mouse into the two **Quectel Pi M1/L1** two **USB-A** ports on the Quectel Pi M1/L1. For wireless keyboard/mouse, insert the receiver into a **USB** port using an Ethernet cable.
4. **Power Connection**: Finally, connect the **USB-A** power cable's **USB-A** end to the power adapter, and the **USB-C** end to **Quectel Pi M1/L1** end to the smart single-board computer's power port.
### System Boot
> β οΈ After connecting power, press and hold the **Quectel Pi M1/L1** on the right side of the **PWRKEY** button on the right side of the Quectel Pi M1/L1 for 3β5 seconds until the system starts.
> ```{image} images/image_JETRbFSh0oYKN7xmy33cLhRXnKe.webp
:width: 785px
:height: 454px
:align: center
```
- Turn on the display and confirm the input source is set to the correct port (e.g.,USB-C or HDMI).
- Quectel Pi M1 smart single-board computer Boot Indicators **οΌ** After connecting **Quectel Pi M1** power (plug in the power cable), the **Quectel Pi M1** power LED (typically blue) stays on, and the system LED (typically blue) turns on then off, indicating the system is booting.
- Quectel Pi L1 smart single-board computer Boot Indicators: After connecting power to **Quectel Pi L1** power (plug in the power cable), the **Quectel Pi L1** power LED (typically blue) stays on, and the system LED (typically blue) turns on then blinks, indicating the system is booting.
- Wait approximately **1** minute(s), and the display will show the system desktop.
### **Quectel Pi M1 smart single-board computer System Login**
For login username and password settings, refer to the [System Login](<../../Operating System/Debian(Gnome)/System Login/System Login.md>) section.
```{note}
The ***root*** account has no password by default. Please set the password before use.
If you open the **Enterprise Login** interface while creating a user and cannot exit, click **Enterprise Login** again to return to the user-creation screen.
```
M1's Debian system uses the GNOME desktop by default. You can switch to the Weston desktop with the following command:
```bash
qpi-config switch weston
```
```{image} images/image_WW56bGBhpoD24dxMM7CcpFW6nGe.webp
:width: 1280px
:height: 800px
:align: center
```
#### Language Settings
Navigate to **System > Region & Language > Language > Select Language**. Log out and back in for changes to take effect.
```{note}
If you switch the system language to Chinese, keep the old username after re-login; otherwise, you may be unable to access paths like `Desktop` and other paths.
```
```{image} images/image_S05qbb7JvoMooaxraJqcmF2znJd.webp
:width: 1280px
:height: 800px
:align: center
```
#### Network Settings
In **Settings**, connect to Wi-Fi by selecting your network name and entering the password.
```{image} images/image_FTpLbbhr4oiF9Ex5unpcrPuAnOe.webp
:width: 1280px
:height: 800px
:align: center
```
#### Opening the Terminal
```{image} images/image_Vv5kbm099oyhtCxgBnccUy98nde.webp
:width: 1682px
:height: 930px
:align: center
```
### **Quectel Pi L1 smart single-board computer System Login**
L1's Debian system currently only supports the Weston desktop.
```{note}
Click the icon in the upper-left corner to open the terminal.
```
```{image} images/image_DuFZb7oHko1NOGxsztHcpGDcnuz.webp
:width: 1088px
:height: 816px
:align: center
```
## Scenario 2: Without Display Boot the Board
If you have not connected a display, keyboard, and mouse to the Quectel Pi M1/L1 smart single-board computer, you can control it remotely from another computer.
To remotely access the Quectel Pi M1/L1, connect it to the network first, then access it from a client on another device. Use **SSH** for remote command-line terminal access, or **RDP** for remote graphical desktop access. If the device is not yet connected to the network, use **ADB** for initial network configuration.
For more remote access options, refer to [Device Connection](<../../User Guide/Device Connection/Device Connection.md>)γ
| **Method** | **Description** | **Prerequisites** | **Tutorial** |
| --- | --- | --- | --- |
| RDP | Remote access to graphical desktop | Device connected to network | [RDP Remote Desktop](<../../User Guide/Device Connection/RDP Remote Desktop/RDP Remote Desktop.md>) |
| SSH | Remote access to command-line terminal | Device connected to network | [SSH Remote Terminal](<../../User Guide/Device Connection/SSH Remote Terminal/SSH Remote Terminal.md>) |
```{note}
On first boot, it is recommended to configure Wi-Fi via ADB first, then use RDP or SSH for daily operations.
```
### ADB Setup
#### Hardware Connection
Prepare aUSB to Type-C to **Type-C** end to **Quectel Pi M1/L1**'s USB-C port on the Quectel Pi M1/L1, and the other end to your host computer.
```{note}
DIP switch 1 must be set to ON, otherwise ADB will not work.
```
```{image} images/image_VcLpbN0EYoIZWvxUVBecX0w8nre.webp
:width: 794px
:height: 523px
:align: center
```
#### ADB Installation
Download the ADB tool:[platform-tools]() γ
Extract the downloaded platform-tools to a folder on your computer.
#### Verify ADB Device Recognition
```{image} images/image_LjRMbZEgEokBHoxnT7bcAGTanP9.webp
:width: 972px
:height: 663px
:align: center
```
Open **platform-tools** folder, type **cmd** in the address bar, and press Enter to open the **adb** terminal. Run the following command:
```bash
adb devices
```
Example output:
```plaintext
List of devices attached
790c2fb9 device
```
#### Create a Regular User
The default system only has the root user. It is recommended to create a regular user for daily operations.
**Create User**
The following example creates a user named `pi`. You may change the username as needed.
```bash
# 'pi' is the username being created
adduser pi
```
The system will interactively prompt you to set a password. Enter the password twice as prompted.
```{image} images/image_CQxSbL1oMoxT2OxO9evcSHOhnad.webp
:width: 437px
:height: 208px
:align: center
```
After user creation, the system automatically generates `/home/username` as the user's home directory, where personal files and project code can be stored.
**Grant sudo Privileges**
```bash
usermod -aG sudo pi
```
**Switch User**
```bash
# Verify user
id pi
#Switch User
su - pi
# Test privileges
whoami
sudo whoami
# Should output 'root', confirming sudo privileges
```
#### Connect to Wi-Fi
The board includes the built-in **`qpi-config`** tool for quick Wi-Fi management.
**Scan for Nearby Wi-Fi Networks**
```bash
qpi-config wifi scan
```
```{image} images/image_Qoemb1COnoikcPxMGq7cirRInCb.webp
:width: 457px
:height: 82px
:align: center
```
**Connect to Wi-Fi**
```bash
# Connect to Wi-Fi
qpi-config wifi connect "Your WiFi Name" "Your WiFi Password"
# View saved Wi-Fi connections
qpi-config wifi show
# Remove a saved Wi-Fi connection
qpi-config wifi remove
```
```{image} images/image_Yl83bSItIomscgxO6ICcG6b7nQh.webp
:width: 686px
:height: 179px
:align: center
```
**Verify Network Connectivity**
```plaintext
ping www.google.com
```
#### Purpose
**Android Debug Bridge**οΌ**ADB**) is a **Android SDK** command-line tool provided by the Android SDK that establishes communication between a computer and an Android device (physical device or emulator), enabling device debugging, management, and development testing.
### Serial Console
#### Hardware Connection
> β οΈWhen using a USB serial cable with the smart single-board computer for serial login, ensure the pin connections are correct. Incorrect pin connections may damage the hardware.
- Connection Method
- Quectel Pi M1/L1 smart single-board computer's **GND** pin connects to the USB serial cable's **GND** pin
- Quectel Pi M1/L1 smart single-board computer's **TXD** pin connects to the USB serial cable's **RXD** pin
- Quectel Pi M1/L1 smart single-board computer's **RXD** pin connects to the USB serial cable's **TXD** pin
#### Serial Login
```{note}
The CH340 driver must be installed first; otherwise the serial port will not be recognized.
```
It is recommended to [**download the QPiTerminal tool**]() for serial connection.
1. Open Device Manager to check the serial port.
2. Double-click to open **QPiTerminal**, select **USB** serial port and set the baud rate to **115200**, then click **connect**γ
```{image} images/image_K6kzbFs4uoFvv8xBuVrcZNsGni1.webp
:width: 1578px
:height: 885px
:align: center
```
3. Enter the system username and password in the terminal to log in (the password will not be displayed during input; press **Enter** after entering the password to log in). Enter `ls` to test. Successful input confirms the serial connection is working; you can then view logs and run commands via the serial port for debugging.
```{image} images/image_CfKub1xJKoDbZtxCMjjcU34ynGh.webp
:width: 617px
:height: 129px
:align: center
```
#### Purpose
**Serial Console** is primarily used to view system logs and run debugging commands via serial connection, and serves as a backup method when the graphical interface is unavailable. It is an essential tool for embedded system development and maintenance, especially for low-level debugging and troubleshooting.
### SSH Connection to the smart single-board computer
**Check Device IP Address**
In the smart single-board computer terminal, execute the `sudo ifconfig` command to obtain the device's IP address.
In this example, the device IP is `10.55.44.50`γ
```{image} images/image_Rzv0bK1kloodOIxCgd1cZfIoncc.webp
:width: 633px
:height: 147px
:align: center
```
**Using the QPiTerminal Tool for SSH Connection to the smart single-board computer**
Open a new SSH session, enter the smart single-board computer's IP address, username, and password, then click Connect (**Connect**)γ
```{image} images/image_RD9FbxzM8oiMoexa4hJcsu0bnOg.webp
:width: 1498px
:height: 811px
:align: center
```
# System Health Check
After the system boots, use the **qpi-config** command in the terminal to quickly check system status:
## Query Module Temperatures
```c
sudo qpi-config dump temperature
```
```{image} images/image_RE7ablPPDo7y97xuOPfcmpV1nhd.webp
:width: 499px
:height: 350px
:align: center
```
## Query CPU, Memory, and Storage Status
```bash
sudo qpi-config dump systemusage
```
```{image} images/image_PZiCbdCgnoXDKjxMFNYcyHnZnnc.webp
:width: 498px
:height: 522px
:align: center
```
## Network Status Check
After connecting the device to the network via Ethernet or Wi-Fi, use the `ping` command to confirm the device can access external networks
```plaintext
ping www.baidu.com
```
**Normal ConnectivityExample output:**
```plaintext
PING www.a.shifen.com (183.2.172.177) 56(84) bytes of data.
64 bytes from 183.2.172.177: icmp_seq=1 ttl=51 time=18.5 ms
64 bytes from 183.2.172.177: icmp_seq=2 ttl=51 time=18.2 ms
64 bytes from 183.2.172.177: icmp_seq=3 ttl=51 time=18.3 ms
64 bytes from 183.2.172.177: icmp_seq=4 ttl=51 time=18.8 ms
64 bytes from 183.2.172.177: icmp_seq=5 ttl=51 time=18.2 ms
64 bytes from 183.2.172.177: icmp_seq=6 ttl=51 time=18.5 ms
64 bytes from 183.2.172.177: icmp_seq=7 ttl=51 time=18.9 ms
--- www.a.shifen.com ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6011ms
rtt min/avg/max/mdev = 18.199/18.482/18.901/0.249 ms
```
> **Indicator Descriptions:**
> - `64 bytes from ...` β ICMP reply received, indicating normal network connectivity
> - `icmp_seq` β Sequence number; responses are continuously received in increasing order
> - `ttl` β Time to live; normal values range from 30 to 128
> - `time` β Round-trip latency; lower values indicate better network quality
> - `0% packet loss` β Packet loss rate is 0%, indicating stable network
```{image} images/image_NZJKbrcTaoQzDQxiaJhc6MDYnWc.webp
:width: 478px
:height: 248px
:align: center
```
# Your First Hello World
## Setting Up the Development Environment
After logging into the Quectel Pi M1/L1 smart single-board computer system, open a terminal window, enter the following command, and press Enter to install the necessary development tools:
```bash
sudo apt update && sudo apt install gcc make
```
## Compiling and Running Hello World (C Version)
1. Open the system terminal and enter the command to create a hello.c file.
```shell
touch hello.c
```
2. Enter the following command to use the **vim** editor to open the **hello.c** file,
```shell
sudo vim hello.c
```
3. Copy the following code into the hello.c file, press "**ESC + Shift + :"**, then type **"wq "** to save the code and exit the vim editor.
```c
#include
int main(void)
{
printf("hello world\r\n");
return 0;
}
```
4. Execute the following command to compile the code:
```shell
gcc hello.c -o hello
```
5. Execute the following command to run the hello program:
```shell
./hello
```
6. Program output:
```shell
./hello
hello world
```
## Compiling and Running Hello World (Python Version)
In addition to C, you can also use Python to quickly implement a Hello World program. The system comes with Python pre-installed, so no additional interpreter installation is required.
1. Open the system terminal and enter the command to create a hello.py file.
```shell
touch hello.py
```
2. Enter the following command to use the **vim** editor to open the **hello.py** file.οΌM1You can also use the **Files** file manager to edit code in the desktop environment.)
```shell
sudo vim hello.py
```
3. Copy the following code into the **hello.py** file, press "**ESC + Shift + :"**, then type **"wq "** to save the code and exit the vim editor
```shell
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
```
4. Python is an interpreted language β no compilation needed, just execute directly:
```shell
python3 hello.py
```
5. Program output:
```shell
python3 hello.py
Hello, World!
```
## Purpose
**Hello World Program** is primarily used to verify that the development environment is set up correctly. By writing, compiling, and running a simple C/Python program, it tests basic system functions including the compiler and runtime environment, making it a fundamental practice for getting started with embedded development.
# Safe Shutdown and Reboot
Quectel Pi M1 provides shutdown and reboot options via the desktop and command line.
## Shutdown via Desktop GUI
If you are using an external display in a desktop environment:
1. Click the upper-right corner of the desktop.
2. select Power Off or Restartγ
```{image} images/image_VEn7bkgULoeQPzxGLvrcsf37nFJ.webp
:width: 1280px
:height: 800px
:align: center
```
## Shutdown via Command Line
Quectel Pi M1/L1 can be shut down or rebooted from the terminal (local terminal, SSH, or ADB shell) using the following commands:
**Shutdown**
```bash
sudo poweroff
```
**Reboot**
```bash
sudo reboot
```
## Shutdown via Physical Button
Press and hold the **PWRKEY** button on the right side of the Quectel Pi M1/L1 (approximately 3-5 seconds) to initiate a safe shutdown.
# What's Next?
After completing the getting-started experience, explore more features:
- [Supported Accessories](<../../Supported Accessories/Supported Accessories.md>)
- [User Guide](<../../User Guide/User Guide.md>)
- [Operating System](<../../Operating System/Operating System.md>)
- [Application Development](<../../Application Development/Application Development.md>)
- [Edge Computing](<../../Edge Computing/Edge Computing.md>)
- [Development Tools](<../../Development Tools/Development Tools.md>)
- [Supported Features](<../../Supported Features/Supported Features.md>)
- [FAQ](<../../FAQ/FAQ.md>)